home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)tv.d64 / supermon inst.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  6KB  |  183 lines

  1. 10 REM SUPERMON INSTR
  2. 20 REM FIXED TO RUN PROPERLY BY
  3. 30 REM RICHARD BRADLEY
  4. 40 REM TORONTO PET USERS GROUP
  5. 50 REM COMMODORE 64 LIBRARIAN
  6. 1100 PRINT"[147]"
  7. 1200 PRINT" SIMPLE ASSEMBLER "
  8. 1300 PRINT".A[146] 2000[146] LDA[146] #$12
  9. 1310 [153]".A 2002 STAWAIT $8000,X
  10. 1320 PRINT".A 2005 (RETURN)
  11. 1330 [153]".
  12. 1340 PRINT"     IN THE ABOVE EXAMPLE THE USER
  13. 1350 [153]"STARTED ASSEMBLY AT 1000 HEX.  THE
  14. 1360 PRINT"FIRST INSTRUCTION WAS LOAD A REGISTER
  15. 1370 [153]"WITH IMMEDIATE 12 HEX.  IN THE SECOND
  16. 1380 PRINT"LINE THE USER DID NOT NEED TO TYPE THE
  17. 1390 [153]"A AND ADDRESS.  THE SIMPLE ASSEMBLER
  18. 1400 PRINT"PROMPTS WITH THE NEXT ADDRESS.  TO EXIT
  19. 1410 [153]"THE ASSEMBLER TYPE A RETURN AFTER THE
  20. 1420 PRINT"THE ADDRESS PROMPT.  SYNTAX IS THE SAME
  21. 1430 [153]"AS THE DISASSEMBLER OUTPUT.
  22. 1450 GOSUB9000
  23. 1500 PRINT"  DISASSEMBLER "
  24. 1510 PRINT".D[146] 2000[146]
  25. 1520 [153]"(SCREEN CLEARS)
  26. 1530 PRINT".,  2000 A9 12       LDA #$12
  27. 1540 [153]".,  2002 9D 00 80    STA $8000,X
  28. 1550 PRINT".,  2005 AA          TAX
  29. 1560 [153]".,  2006 AA          TAX
  30. 1570 PRINT"(FULL PAGE OF INSTRUCTIONS)
  31. 1600 [153]"     DISASSEMBLES 22 INSTRUCTIONS
  32. 1610 PRINT"STARTING AT 1000 HEX.  THE THREE BYTES
  33. 1620 [153]"FOLLOWING THE ADDRESS MAY BE MODIFIED.
  34. 1630 PRINT"USE THE CRSR KEYS TO MOVE TO AND MODIFY
  35. 1640 [153]"THE BYTES.  HIT RETURN AND THE BYTES
  36. 1650 PRINT"IN MEMORY WILL BE CHANGED.  SUPERMON[146]
  37. 1660 [153]"WILL THEN DISASSEMBLE THAT PAGE AGAIN.
  38. 1690 GOSUB9000
  39. 1700 PRINT" PRINTING DISASSEMBLER "
  40. 1710 PRINT".P[146] 2000,2040[146]
  41. 1720 [153]"2000 A9 12       LDA #$12
  42. 1730 PRINT"2002 9D 00 80    STA $8000,XY.
  43. 1740 [153]"2005 AA          TAX
  44. 1750 PRINT"   ...."
  45. 1760 PRINT"203F A2 00       LDX #$00
  46. 1770 [153]"TO ENGAGE PRINTER, SET UP BEFOREHAND:
  47. 1775 PRINT"     OPEN 4,4:CMD4
  48. 1780 [153]"ON 4.0, ACCESS THE MONITOR VIA A CALL
  49. 1785 PRINT"SYS 54386 (*NOT* A BREAK) COMMAND
  50. 1790 [141] 9000
  51. 1800 [153]" SINGLE STEP "
  52. 1810 [153]".I
  53. 1820 PRINT"     ALLOWS A MACHINE LANGUAGE PROGRAM
  54. 1830 [153]"TO BE RUN STEP BY STEP.
  55. 1840 PRINT"CALL REGISTER DISPLAY WITH .R[146] AND SET
  56. 1850 [153]"THE PC ADDRESS TO THE DESIRED FIRST
  57. 1860 PRINT"INSTRUCTION FOR SINGLE STEPPING.
  58. 1870 [153]"THE .IWAIT WILL CAUSE A SINGLE STEP TO
  59. 1880 PRINT"EXECUTE AND WILL DISASSEMBLE THE NEXT.
  60. 1890 [153]"CONTROLS:
  61. 1900 PRINT"  <[146] FOR SINGLE STEP;
  62. 1910 [153]"  RVSWAIT FOR SLOW STEP;
  63. 1920 PRINT"  SPACE[146] FOR FAST STEPPING;
  64. 1930 [153]"  STOPWAIT TO RETURN TO MONITOR."
  65. 1940 [153]"[ON BUSINESS KEYBOARDS--
  66. 1950 PRINT"      USE 8[146],_[146],6[146] AND STOP[146]].
  67. 1990 [141]9000
  68. 2000 [153]" FILL MEMORY "
  69. 2010 [153]".FWAIT 1000WAIT 1100WAIT FF
  70. 2020 PRINT"     FILLS THE MEMORY FROM 1000 HEX TO
  71. 2030 [153]"1100 HEX WITH THE BYTE FF HEX.
  72. 2090 GOSUB9000
  73. 2100 PRINT" GO RUN "
  74. 2110 PRINT".G
  75. 2120 [153]"     GO TO THE ADDRESS IN THE PC
  76. 2130 PRINT"REGISTER DISPLAY AND BEGIN RUN CODE.
  77. 2140 [153]"ALL THE REGISTERS WILL BE REPLACED
  78. 2150 PRINT"WITH THE DISPLAYED VALUES."
  79. 2160 PRINT".G[146] 1000
  80. 2170 [153]"     GO TO ADDRESS 1000 HEX AND BEGIN
  81. 2180 PRINT"RUNNING CODE.
  82. 2190 [141]9000
  83. 2200 [153]" HUNT MEMORY "
  84. 2210 [153]".HWAIT C000WAIT D000WAIT 'READ
  85. 2220 PRINT"     HUNT THRU MEMORY FROM C000 HEX TO
  86. 2230 [153]"D000 HEX FOR THE ASCII STRING READWAIT AND
  87. 2240 PRINT"PRINT THE ADDRESS WHERE IT IS FOUND.  A
  88. 2250 [153]"MAXIMUM OF 32 CHARACTERS MAY BE USED.
  89. 2260 PRINT".H[146] C000[146] D000[146] 20[146] D2[146] FF
  90. 2270 [153]"     HUNT MEMORY FROM C000 HEX TO D000
  91. 2280 PRINT"HEX FOR THE SEQUENCE OF BYTES 20 D2 FF
  92. 2290 [153]"AND PRINT THE ADDRESS.  A MAXIMUM OF 32
  93. 2300 PRINT"BYTES MAY BE USED.
  94. 2390 [141]9000
  95. 2400 [153]" LOAD "
  96. 2401 [153]".LWAIT
  97. 2402 PRINT"   LOAD ANY PROGRAM FROM CASSETTE #1.
  98. 2403 [153]".LWAIT ";[199](34);"RAM TEST";[199](34)
  99. 2404 [153]"   LOAD FROM CASSETTE #1 THE PROGRAM
  100. 2405 PRINT"NAMED RAM TEST[146].
  101. 2410 [153]".LWAIT ";[199](34);"RAM TEST";[199](34);",08WAIT
  102. 2420 PRINT" LOAD FROM DISK (DEVICE 8) THE PROGRAM
  103. 2430 [153]"NAMED RAM TESTWAIT.
  104. 2440 PRINT"THIS COMMAND LEAVES BASIC POINTERS
  105. 2450 [153]"UNCHANGED.
  106. 2490 GOSUB9000
  107. 2500 PRINT" MEMORY DISPLAY "
  108. 2510 PRINT".M[146] 0000[146] 0080
  109. 2520 [153]".:  0000 00 01 02 03 04 05 06 07
  110. 2530 PRINT".:  0008 08 09 0A 0B 0C 0D 0E 0F
  111. 2540 [153]"     DISPLAY MEMORY FROM 0000 HEX TO
  112. 2550 PRINT"0080 HEX.  THE BYTES FOLLOWING THE
  113. 2560 [153]"ADDRESS MAY BE MODIFIED BY EDITING AND
  114. 2570 PRINT"THEN TYPING A RETURN.
  115. 2590 [141]9000
  116. 2600 [153]" REGISTER DISPLAY "
  117. 2610 [153]".R
  118. 2620 PRINT"     PC  IRQ  SR AC XR YR SP
  119. 2630 [153]".;  0000 E62E 01 02 03 04 05
  120. 2640 PRINT"     DISPLAYS THE REGISTER VALUES SAVED
  121. 2650 [153]"WHEN SUPERMONWAIT WAS ENTERED.  THE VALUES
  122. 2660 PRINT"MAY BE CHANGED WITH THE EDIT FOLLOWED
  123. 2670 [153]"BY A RETURN.
  124. 2671 PRINT"  USE THIS INSTRUCTION TO SET UP THE
  125. 2672 [153]"PC VALUE BEFORE SINGLE STEPPING WITH"
  126. 2673 [153]".IWAIT
  127. 2690 GOSUB9000
  128. 2700 PRINT" SAVE"
  129. 2710 PRINT".S[146] ";CHR$(34);"PROGRAM NAME";CHR$(34);",01,0800,0C80"
  130. 2720 PRINT"     SAVE TO CASSETTE #1 MEMORY FROM
  131. 2730 [153]"0800 HEX UP TO BUT NOT INCLUDING 0C80
  132. 2740 PRINT"HEX AND NAME IT PROGRAM NAME[146].
  133. 2750 [153]".SWAIT ";[199](34);"0:PROGRAM NAME";[199](34);",08,1200,1F50"
  134. 2760 [153]"    SAVE TO DISK DRIVE #0 MEMORY FROM
  135. 2770 PRINT"1200 HEX UP TO BUT NOT INCLUDING 1F50
  136. 2780 [153]"HEX AND NAME IT PROGRAM NAMEWAIT.
  137. 2790 GOSUB9000
  138. 2800 PRINT" TRANSFER MEMORY "
  139. 2810 PRINT".T[146] 1000[146] 1100[146] 5000
  140. 2820 [153]"     TRANSFER MEMORY IN THE RANGE 1000
  141. 2830 PRINT"HEX TO 1100 HEX AND START STORING IT AT
  142. 2840 [153]"ADDRESS 5000 HEX.
  143. 2890 GOSUB9000
  144. 3200 PRINT" EXIT TO BASIC "
  145. 3210 PRINT".X
  146. 3220 [153]"     RETURN TO BASIC READY MODE.
  147. 3230 PRINT"THE STACK VALUE SAVED WHEN ENTERED WILL
  148. 3240 [153]"BE RESTORED.  CARE SHOULD BE TAKEN THAT
  149. 3250 PRINT"THIS VALUE IS THE SAME AS WHEN THE
  150. 3260 [153]"MONITOR WAS ENTERED.  A CLR IN
  151. 3270 PRINT"BASIC WILL FIX ANY STACK PROBLEMS.
  152. 3290 [141]9000
  153. 3500 [153]"ON        SUMMARY                     "
  154. 3505 [153]"COMMODORE MONITOR INSTRUCTIONS:"
  155. 3510 [153]"GWAIT GO RUN
  156. 3520 PRINT"L[146] LOAD FROM TAPE OR DISK
  157. 3530 [153]"MWAIT MEMORY DISPLAY
  158. 3540 PRINT"R[146] REGISTER DISPLAY
  159. 3550 [153]"SWAIT SAVE TO TAPE OR DISK
  160. 3560 PRINT"X[146] EXIT TO BASIC
  161. 3595 [153]"SUPERMON ADDITIONAL INSTRUCTIONS:"
  162. 3600 [153]"AWAIT SIMPLE ASSEMBLER
  163. 3610 PRINT"D[146] DISASSEMBLER
  164. 3620 [153]"FWAIT FILL MEMORY
  165. 3630 PRINT"H[146] HUNT MEMORY
  166. 3640 [153]"IWAIT SINGLE INSTRUCTION
  167. 3650 PRINT"P[146] PRINTING DISASSEMBLER
  168. 3660 [153]"TWAIT TRANSFER MEMORY
  169. 4000 GOSUB9000
  170. 4010 PRINT"[145]SUPERMON[146] WILL LOAD ITSELF INTO THE
  171. 4020 [153]"TOP OF MEMORY .. WHEREVER THAT HAPPENS
  172. 4030 PRINT"TO BE ON YOUR MACHINE.
  173. 4040 [153]"   YOU MAY THEN SAVE THE MACHINE CODE
  174. 4050 PRINT"FOR FASTER LOADING IN THE FUTURE.
  175. 4060 [153]"BE SURE TO NOTE THE SYS COMMAND WHICH
  176. 4070 PRINT"LINKS SUPERMON[146] TO THE COMMODORE
  177. 4080 [153]"MONITOR.
  178. 5000 END
  179. 9000 PRINT"PRESS ANY KEY TO CONTINUE.";
  180. 9005 GETA$:IFA$=""GOTO9005
  181. 9010 PRINT"[147]";
  182. 10040 RETURN
  183.